﻿using System;
using System.Threading.Tasks;
using System.Windows.Input;

namespace HYGE.AsyncCommand
{
    /// <summary>
    /// 非同期実行コマンドが実装するインターフェース。
    /// ViewModelでの定義を前提に、CanExecuteChangedを外部からRaiseできるようにする。
    /// </summary>
    public interface IAsyncCommand : ICommand
    {
        #region Events

        #region JobCreated
        /// <summary>
        /// Execute実行時にJobが作成された後に発生する。
        /// </summary>
        event EventHandler<JobCreatedEventArgs> JobCreated;
        #endregion

        #endregion

        #region Properties

        #region Scheduler
        /// <summary>
        /// ジョブの実行に使用するTaskScheduler。
        /// </summary>
        TaskScheduler Scheduler
        {
            get;
            set;
        }
        #endregion

        #endregion
    }
}
